﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NCT.Framework;

namespace VISS.API.Users {
    /// <summary>
    /// This entity contains info about search result
    /// </summary>
    [Serializable]
    public class UserSrhResEnt {

        #region Properties

        /// <summary>
        /// Gets or sets the user key.
        /// </summary>
        /// <value>The user key.</value>
        public string UserKey { get; set; }
        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>The name.</value>
        public string Name { get; set; }
        /// <summary>
        /// Gets or sets the gender.
        /// </summary>
        /// <value>The gender.</value>
        public EUserGender Gender { get; set; }
        /// <summary>
        /// Gets or sets the birth date.
        /// </summary>
        /// <value>The birth date.</value>
        public DateTime BirthDate { get; set; }
        /// <summary>
        /// Gets or sets the age.
        /// </summary>
        /// <value>The age.</value>
        public byte Age { get; set; }
        /// <summary>
        /// Gets or sets the city ID.
        /// </summary>
        /// <value>The city ID.</value>
        public short CityID { get; set; }
        /// <summary>
        /// Gets or sets the city.
        /// </summary>
        /// <value>The city.</value>
        public string City { get; set; }
        /// <summary>
        /// Gets or sets the country ID.
        /// </summary>
        /// <value>The country ID.</value>
        public short CountryID { get; set; }
        /// <summary>
        /// Gets or sets the country.
        /// </summary>
        /// <value>The country.</value>
        public string Country { get; set; }
        /// <summary>
        /// Gets or sets the education ID.
        /// </summary>
        /// <value>The education ID.</value>
        public short EducationID { get; set; }
        /// <summary>
        /// Gets or sets the education.
        /// </summary>
        /// <value>The education.</value>
        public string Education { get; set; }
        /// <summary>
        /// Gets or sets the job ID.
        /// </summary>
        /// <value>The job ID.</value>
        public short JobID { get; set; }
        /// <summary>
        /// Gets or sets the job.
        /// </summary>
        /// <value>The job.</value>
        public string Job { get; set; }
        /// <summary>
        /// Gets or sets the image count.
        /// </summary>
        /// <value>The image count.</value>
        public int ImageCount { get; set; }
        /// <summary>
        /// Gets or sets the blast.
        /// </summary>
        /// <value>The blast.</value>
        public string Blast { get; set; }
        /// <summary>
        /// Gets or sets the name of the avatar file.
        /// </summary>
        /// <value>The name of the avatar file.</value>
        public string AvatarFileName { get; set; }
        /// <summary>
        /// Gets or sets the avatar image store ID.
        /// </summary>
        /// <value>The avatar image store ID.</value>
        public int AvatarImageStoreID { get; set; }
        /// <summary>
        /// Gets or sets the avatar status.
        /// </summary>
        /// <value>The avatar status.</value>
        public EUserAvatarStatus AvatarStatus { get; set; }

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="UserSrhResEnt"/> class.
        /// </summary>
        public UserSrhResEnt() {
            UserKey = string.Empty;
            Name = string.Empty;
            Gender = EUserGender.Unknown;
            BirthDate = DateTimeUtils.MinValue;
            Age = 0;
            CityID = 0;
            City = string.Empty;
            CountryID = 0;
            Country = string.Empty;
            EducationID = 0;
            Education = string.Empty;
            JobID = 0;
            Job = string.Empty;
            ImageCount = 0;
            Blast = string.Empty;
            AvatarFileName = null;
            AvatarImageStoreID = 0;
            AvatarStatus = EUserAvatarStatus.Available;
        }

        #endregion
    }

    /// <summary>
    /// This entity is only used for Noel Event
    /// </summary>
    [Serializable]
    public class EvtNoelUserSrhResEnt : UserSrhResEnt {

        #region Properties

        /// <summary>
        /// Gets or sets a value indicating whether [go out].
        /// </summary>
        /// <value><c>true</c> if [go out]; otherwise, <c>false</c>.</value>
        public bool GoOut { get; set; }

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="EvtNoelUserSrhResEnt"/> class.
        /// </summary>
        public EvtNoelUserSrhResEnt()
            : base() {
            GoOut = false;
        }

        #endregion
    }
}
